home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
201
/
201.xpi
/
components
/
privacycontrol.js
< prev
Wrap
Text File
|
2010-01-11
|
4KB
|
131 lines
/* You may find the license in the LICENSE file */
function include(uri) {
Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Components.interfaces.mozIJSSubScriptLoader).loadSubScript(uri);
}
include('chrome://dta/content/common/xpcom.jsm');
var PrivacyControl = {
initialize : function() {
// install required observers, so that we may process on shutdown
const os = Components.classes['@mozilla.org/observer-service;1']
.getService(Components.interfaces.nsIObserverService);
os.addObserver(this, 'profile-change-teardown', false);
os.addObserver(this, 'xpcom-shutdown', false);
},
dispose: function() {
// always remove observers ;)
const os = Components.classes['@mozilla.org/observer-service;1']
.getService(Components.interfaces.nsIObserverService);
os.removeObserver(this, 'profile-change-teardown');
os.removeObserver(this, 'xpcom-shutdown');
},
observe: function(subject, topic, data) {
switch (topic) {
case 'xpcom-shutdown':
this.dispose();
break;
case 'profile-change-teardown':
this.onShutdown();
break;
case 'sanitize':
this.sanitize();
break;
case 'clean':
this.clean();
break;
}
},
clean: function() {
debug('clean()');
// Cleaning prefs
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService).getBranch(
'extensions.dta.');
for each (let e in ['directory', 'filter', 'renaming']) {
try {
prefs.clearUserPref(e);
}
catch (ex) {
debug("Cannot clear pref: " + e, ex);
}
}
// Cleaning files
try {
var prof = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties).get("ProfD",
Components.interfaces.nsIFile);
for each (let e in ['dta_history.xml', 'dta_log.txt', 'dta_queue.sqlite']) {
try {
var file = prof.clone();
file.append(e);
if (file.exists()) {
file.remove(false);
}
}
catch (ex) {
debug('cannot remove: ' + e, ex);
}
}
}
catch (oex) {
debug('failed to clean files: ', oex);
}
},
sanitize : function() {
debug("sanitize()");
const prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService).getBranch('privacy.');
// in case UI should be used the cleaning will be processed there.
// Furthermore we have to ensure user wants us to sanitize.
if (!prefs.getBoolPref('sanitize.promptOnSanitize')
&& prefs.getBoolPref('item.extensions-dta')){
this.clean(prefs);
}
},
get is190() {
let ai = Cc['@mozilla.org/xre/app-info;1'].getService(Ci.nsIXULAppInfo);
let vc = Cc['@mozilla.org/xpcom/version-comparator;1'].getService(Ci.nsIVersionComparator);
return vc.compare(ai.platformVersion, '1.9.1') < 0;
},
onShutdown : function() {
const prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService).getBranch('privacy.');
if (this.is190) {
// has user pref'ed to sanitize on shutdown?
if (prefs.getBoolPref('sanitize.sanitizeOnShutdown')){
this.sanitize();
}
return;
}
if (prefs.getBoolPref('sanitize.sanitizeOnShutdown') && prefs.getBoolPref('clearOnShutdown.extensions-dta')){
this.clean();
}
}
};
implementComponent(
PrivacyControl,
Components.ID("{db7a8d60-a4c7-11da-a746-0800200c9a66}"),
"@downthemall.net/privacycontrol;1",
"DownThemAll! Privacy Control",
[Ci.nsIObserver]
);
PrivacyControl.initialize();
function NSGetModule(mgr, spec) {
return new ServiceModule(PrivacyControl, true);
}